// 常量
var path = require('path');
var __cwd = process.cwd();

// user
var __userFname = '%uid_%HH-MM-ss_%counter.jpg';
var __userRpath = '/%yyyy-mm-dd/%uid_%HH-MM-ss_%counter.jpg';

// star
var __starFname = '%starid.jpg';
var __starRpath = path.join('/face_list', __starFname);

// part
var __partFname = '%starid_%otype.jpg';
var __partRoot = path.join(__cwd, '/static/face_part');
//var __partFpath = path.join(__partRoot, __partFname);
var __partRurl = '/face_part/%starid_%otype.jpg';

// rendered

var __same = {
  cwd: __cwd,
  baseUrl: '/api',
  testApiPre: '/test',
  manBaseUrl: '/manapi'
};

/**
 * env 必须包含
 * userRoot, starRoot, rootUrl
 * @param cfg
 */
module.exports = function (cfg) {
  var toCheck = ['userRoot', 'starRoot', 'rootUrl'];
  for (var envVar of toCheck) {
    if (!cfg[envVar]) throw new Error('config/common.js 需要配置 ' + envVar);
  }

  // merge
  for (var key of Object.keys(__same)) {
    cfg[key] = __same[key];
  }

  // 路径部分
  cfg.dir = {
    // 用户图片 跟目录,相对路径,文件名,完整路径
    userRoot: cfg.userRoot,
    //userRoot: '/data/face/user_face',
    userRpath: __userRpath,
    userFname: __userFname,
    userFpath: path.join(cfg.userRoot, __userRpath),
    datePtn: 'yyyy-mm-dd',
    timePtn: 'HH-MM-ss',

    // 明星图片 跟目录,相对路径,文件名,完整路径
    //starRoot: '/data/face/face_list',
    starRoot: cfg.starRoot,
    starRpath: __starRpath,
    starFname: __starFname,
    starFpath: path.join(cfg.starRoot, __starFname),

    // 面部组件部分 跟目录,相对路径,文件名,完整路径,相对url,绝对url
    partRoot: __partRoot,
    partRpath: '/',
    partFname: __partFname,
    partFpath: path.join(__partRoot, __partFname),
    partRurl: __partRurl,
    partFurl: path.join(cfg.rootUrl, __partRurl),

    // 临时文件夹,临时保存上传来的文件
    tmpFolder: path.join(__cwd, 'upload_tmp')
  };

  // 部位编号
  cfg.EnumParts = {
    brow: 0,
    eye: 1,
    nose: 2,
    mouse: 3
  };

  // token部分
  cfg.tokenRules = {
    md5SrcPtn: '_AA_uid=%uid&manager=%manager&time=%time_BB_',
    md5SrcPtn2: '_AA_%src_BB_',
    tokenSrcPtn: 'uid=%uid&manager=%manager&time=%time&md5=%md5',
    seperator: '&md5=',
    // 单位ms , 10分钟
    tokenTimeOut: 10 * 60 * 1000
  }
};